//===----------------------------------------------------------------------===//
//
// This source file is part of the Soto for AWS open source project
//
// Copyright (c) 2017-2022 the Soto project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of Soto project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//

// THIS FILE IS AUTOMATICALLY GENERATED by https://github.com/soto-project/soto-codegenerator.
// DO NOT EDIT.

#if compiler(>=5.5.2) && canImport(_Concurrency)

import SotoCore

@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
extension Pinpoint {
    // MARK: Async API Calls

    /// Creates an application.
    public func createApp(_ input: CreateAppRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateAppResponse {
        return try await self.client.execute(operation: "CreateApp", path: "/v1/apps", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a new campaign for an application or updates the settings of an existing campaign for an application.
    public func createCampaign(_ input: CreateCampaignRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateCampaignResponse {
        return try await self.client.execute(operation: "CreateCampaign", path: "/v1/apps/{ApplicationId}/campaigns", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a message template for messages that are sent through the email channel.
    public func createEmailTemplate(_ input: CreateEmailTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateEmailTemplateResponse {
        return try await self.client.execute(operation: "CreateEmailTemplate", path: "/v1/templates/{TemplateName}/email", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates an export job for an application.
    public func createExportJob(_ input: CreateExportJobRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateExportJobResponse {
        return try await self.client.execute(operation: "CreateExportJob", path: "/v1/apps/{ApplicationId}/jobs/export", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates an import job for an application.
    public func createImportJob(_ input: CreateImportJobRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateImportJobResponse {
        return try await self.client.execute(operation: "CreateImportJob", path: "/v1/apps/{ApplicationId}/jobs/import", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a new message template for messages using the in-app message channel.
    public func createInAppTemplate(_ input: CreateInAppTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateInAppTemplateResponse {
        return try await self.client.execute(operation: "CreateInAppTemplate", path: "/v1/templates/{TemplateName}/inapp", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a journey for an application.
    public func createJourney(_ input: CreateJourneyRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateJourneyResponse {
        return try await self.client.execute(operation: "CreateJourney", path: "/v1/apps/{ApplicationId}/journeys", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a message template for messages that are sent through a push notification channel.
    public func createPushTemplate(_ input: CreatePushTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreatePushTemplateResponse {
        return try await self.client.execute(operation: "CreatePushTemplate", path: "/v1/templates/{TemplateName}/push", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates an Amazon Pinpoint configuration for a recommender model.
    public func createRecommenderConfiguration(_ input: CreateRecommenderConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateRecommenderConfigurationResponse {
        return try await self.client.execute(operation: "CreateRecommenderConfiguration", path: "/v1/recommenders", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a new segment for an application or updates the configuration, dimension, and other settings for an existing segment that's associated with an application.
    public func createSegment(_ input: CreateSegmentRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateSegmentResponse {
        return try await self.client.execute(operation: "CreateSegment", path: "/v1/apps/{ApplicationId}/segments", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a message template for messages that are sent through the SMS channel.
    public func createSmsTemplate(_ input: CreateSmsTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateSmsTemplateResponse {
        return try await self.client.execute(operation: "CreateSmsTemplate", path: "/v1/templates/{TemplateName}/sms", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a message template for messages that are sent through the voice channel.
    public func createVoiceTemplate(_ input: CreateVoiceTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateVoiceTemplateResponse {
        return try await self.client.execute(operation: "CreateVoiceTemplate", path: "/v1/templates/{TemplateName}/voice", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Disables the ADM channel for an application and deletes any existing settings for the channel.
    public func deleteAdmChannel(_ input: DeleteAdmChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteAdmChannelResponse {
        return try await self.client.execute(operation: "DeleteAdmChannel", path: "/v1/apps/{ApplicationId}/channels/adm", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Disables the APNs channel for an application and deletes any existing settings for the channel.
    public func deleteApnsChannel(_ input: DeleteApnsChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteApnsChannelResponse {
        return try await self.client.execute(operation: "DeleteApnsChannel", path: "/v1/apps/{ApplicationId}/channels/apns", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Disables the APNs sandbox channel for an application and deletes any existing settings for the channel.
    public func deleteApnsSandboxChannel(_ input: DeleteApnsSandboxChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteApnsSandboxChannelResponse {
        return try await self.client.execute(operation: "DeleteApnsSandboxChannel", path: "/v1/apps/{ApplicationId}/channels/apns_sandbox", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Disables the APNs VoIP channel for an application and deletes any existing settings for the channel.
    public func deleteApnsVoipChannel(_ input: DeleteApnsVoipChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteApnsVoipChannelResponse {
        return try await self.client.execute(operation: "DeleteApnsVoipChannel", path: "/v1/apps/{ApplicationId}/channels/apns_voip", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Disables the APNs VoIP sandbox channel for an application and deletes any existing settings for the channel.
    public func deleteApnsVoipSandboxChannel(_ input: DeleteApnsVoipSandboxChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteApnsVoipSandboxChannelResponse {
        return try await self.client.execute(operation: "DeleteApnsVoipSandboxChannel", path: "/v1/apps/{ApplicationId}/channels/apns_voip_sandbox", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes an application.
    public func deleteApp(_ input: DeleteAppRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteAppResponse {
        return try await self.client.execute(operation: "DeleteApp", path: "/v1/apps/{ApplicationId}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Disables the Baidu channel for an application and deletes any existing settings for the channel.
    public func deleteBaiduChannel(_ input: DeleteBaiduChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteBaiduChannelResponse {
        return try await self.client.execute(operation: "DeleteBaiduChannel", path: "/v1/apps/{ApplicationId}/channels/baidu", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes a campaign from an application.
    public func deleteCampaign(_ input: DeleteCampaignRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteCampaignResponse {
        return try await self.client.execute(operation: "DeleteCampaign", path: "/v1/apps/{ApplicationId}/campaigns/{CampaignId}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Disables the email channel for an application and deletes any existing settings for the channel.
    public func deleteEmailChannel(_ input: DeleteEmailChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteEmailChannelResponse {
        return try await self.client.execute(operation: "DeleteEmailChannel", path: "/v1/apps/{ApplicationId}/channels/email", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes a message template for messages that were sent through the email channel.
    public func deleteEmailTemplate(_ input: DeleteEmailTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteEmailTemplateResponse {
        return try await self.client.execute(operation: "DeleteEmailTemplate", path: "/v1/templates/{TemplateName}/email", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes an endpoint from an application.
    public func deleteEndpoint(_ input: DeleteEndpointRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteEndpointResponse {
        return try await self.client.execute(operation: "DeleteEndpoint", path: "/v1/apps/{ApplicationId}/endpoints/{EndpointId}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes the event stream for an application.
    public func deleteEventStream(_ input: DeleteEventStreamRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteEventStreamResponse {
        return try await self.client.execute(operation: "DeleteEventStream", path: "/v1/apps/{ApplicationId}/eventstream", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Disables the GCM channel for an application and deletes any existing settings for the channel.
    public func deleteGcmChannel(_ input: DeleteGcmChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteGcmChannelResponse {
        return try await self.client.execute(operation: "DeleteGcmChannel", path: "/v1/apps/{ApplicationId}/channels/gcm", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes a message template for messages sent using the in-app message channel.
    public func deleteInAppTemplate(_ input: DeleteInAppTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteInAppTemplateResponse {
        return try await self.client.execute(operation: "DeleteInAppTemplate", path: "/v1/templates/{TemplateName}/inapp", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes a journey from an application.
    public func deleteJourney(_ input: DeleteJourneyRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteJourneyResponse {
        return try await self.client.execute(operation: "DeleteJourney", path: "/v1/apps/{ApplicationId}/journeys/{JourneyId}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes a message template for messages that were sent through a push notification channel.
    public func deletePushTemplate(_ input: DeletePushTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeletePushTemplateResponse {
        return try await self.client.execute(operation: "DeletePushTemplate", path: "/v1/templates/{TemplateName}/push", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes an Amazon Pinpoint configuration for a recommender model.
    public func deleteRecommenderConfiguration(_ input: DeleteRecommenderConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteRecommenderConfigurationResponse {
        return try await self.client.execute(operation: "DeleteRecommenderConfiguration", path: "/v1/recommenders/{RecommenderId}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes a segment from an application.
    public func deleteSegment(_ input: DeleteSegmentRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteSegmentResponse {
        return try await self.client.execute(operation: "DeleteSegment", path: "/v1/apps/{ApplicationId}/segments/{SegmentId}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Disables the SMS channel for an application and deletes any existing settings for the channel.
    public func deleteSmsChannel(_ input: DeleteSmsChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteSmsChannelResponse {
        return try await self.client.execute(operation: "DeleteSmsChannel", path: "/v1/apps/{ApplicationId}/channels/sms", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes a message template for messages that were sent through the SMS channel.
    public func deleteSmsTemplate(_ input: DeleteSmsTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteSmsTemplateResponse {
        return try await self.client.execute(operation: "DeleteSmsTemplate", path: "/v1/templates/{TemplateName}/sms", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes all the endpoints that are associated with a specific user ID.
    public func deleteUserEndpoints(_ input: DeleteUserEndpointsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteUserEndpointsResponse {
        return try await self.client.execute(operation: "DeleteUserEndpoints", path: "/v1/apps/{ApplicationId}/users/{UserId}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Disables the voice channel for an application and deletes any existing settings for the channel.
    public func deleteVoiceChannel(_ input: DeleteVoiceChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteVoiceChannelResponse {
        return try await self.client.execute(operation: "DeleteVoiceChannel", path: "/v1/apps/{ApplicationId}/channels/voice", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Deletes a message template for messages that were sent through the voice channel.
    public func deleteVoiceTemplate(_ input: DeleteVoiceTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DeleteVoiceTemplateResponse {
        return try await self.client.execute(operation: "DeleteVoiceTemplate", path: "/v1/templates/{TemplateName}/voice", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of the ADM channel for an application.
    public func getAdmChannel(_ input: GetAdmChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetAdmChannelResponse {
        return try await self.client.execute(operation: "GetAdmChannel", path: "/v1/apps/{ApplicationId}/channels/adm", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of the APNs channel for an application.
    public func getApnsChannel(_ input: GetApnsChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetApnsChannelResponse {
        return try await self.client.execute(operation: "GetApnsChannel", path: "/v1/apps/{ApplicationId}/channels/apns", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of the APNs sandbox channel for an application.
    public func getApnsSandboxChannel(_ input: GetApnsSandboxChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetApnsSandboxChannelResponse {
        return try await self.client.execute(operation: "GetApnsSandboxChannel", path: "/v1/apps/{ApplicationId}/channels/apns_sandbox", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of the APNs VoIP channel for an application.
    public func getApnsVoipChannel(_ input: GetApnsVoipChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetApnsVoipChannelResponse {
        return try await self.client.execute(operation: "GetApnsVoipChannel", path: "/v1/apps/{ApplicationId}/channels/apns_voip", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of the APNs VoIP sandbox channel for an application.
    public func getApnsVoipSandboxChannel(_ input: GetApnsVoipSandboxChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetApnsVoipSandboxChannelResponse {
        return try await self.client.execute(operation: "GetApnsVoipSandboxChannel", path: "/v1/apps/{ApplicationId}/channels/apns_voip_sandbox", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about an application.
    public func getApp(_ input: GetAppRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetAppResponse {
        return try await self.client.execute(operation: "GetApp", path: "/v1/apps/{ApplicationId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves (queries) pre-aggregated data for a standard metric that applies to an application.
    public func getApplicationDateRangeKpi(_ input: GetApplicationDateRangeKpiRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetApplicationDateRangeKpiResponse {
        return try await self.client.execute(operation: "GetApplicationDateRangeKpi", path: "/v1/apps/{ApplicationId}/kpis/daterange/{KpiName}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the settings for an application.
    public func getApplicationSettings(_ input: GetApplicationSettingsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetApplicationSettingsResponse {
        return try await self.client.execute(operation: "GetApplicationSettings", path: "/v1/apps/{ApplicationId}/settings", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about all the applications that are associated with your Amazon Pinpoint account.
    public func getApps(_ input: GetAppsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetAppsResponse {
        return try await self.client.execute(operation: "GetApps", path: "/v1/apps", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of the Baidu channel for an application.
    public func getBaiduChannel(_ input: GetBaiduChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetBaiduChannelResponse {
        return try await self.client.execute(operation: "GetBaiduChannel", path: "/v1/apps/{ApplicationId}/channels/baidu", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status, configuration, and other settings for a campaign.
    public func getCampaign(_ input: GetCampaignRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetCampaignResponse {
        return try await self.client.execute(operation: "GetCampaign", path: "/v1/apps/{ApplicationId}/campaigns/{CampaignId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about all the activities for a campaign.
    public func getCampaignActivities(_ input: GetCampaignActivitiesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetCampaignActivitiesResponse {
        return try await self.client.execute(operation: "GetCampaignActivities", path: "/v1/apps/{ApplicationId}/campaigns/{CampaignId}/activities", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves (queries) pre-aggregated data for a standard metric that applies to a campaign.
    public func getCampaignDateRangeKpi(_ input: GetCampaignDateRangeKpiRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetCampaignDateRangeKpiResponse {
        return try await self.client.execute(operation: "GetCampaignDateRangeKpi", path: "/v1/apps/{ApplicationId}/campaigns/{CampaignId}/kpis/daterange/{KpiName}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status, configuration, and other settings for a specific version of a campaign.
    public func getCampaignVersion(_ input: GetCampaignVersionRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetCampaignVersionResponse {
        return try await self.client.execute(operation: "GetCampaignVersion", path: "/v1/apps/{ApplicationId}/campaigns/{CampaignId}/versions/{Version}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status, configuration, and other settings for all versions of a campaign.
    public func getCampaignVersions(_ input: GetCampaignVersionsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetCampaignVersionsResponse {
        return try await self.client.execute(operation: "GetCampaignVersions", path: "/v1/apps/{ApplicationId}/campaigns/{CampaignId}/versions", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status, configuration, and other settings for all the campaigns that are associated with an application.
    public func getCampaigns(_ input: GetCampaignsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetCampaignsResponse {
        return try await self.client.execute(operation: "GetCampaigns", path: "/v1/apps/{ApplicationId}/campaigns", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the history and status of each channel for an application.
    public func getChannels(_ input: GetChannelsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetChannelsResponse {
        return try await self.client.execute(operation: "GetChannels", path: "/v1/apps/{ApplicationId}/channels", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of the email channel for an application.
    public func getEmailChannel(_ input: GetEmailChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetEmailChannelResponse {
        return try await self.client.execute(operation: "GetEmailChannel", path: "/v1/apps/{ApplicationId}/channels/email", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves the content and settings of a message template for messages that are sent through the email channel.
    public func getEmailTemplate(_ input: GetEmailTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetEmailTemplateResponse {
        return try await self.client.execute(operation: "GetEmailTemplate", path: "/v1/templates/{TemplateName}/email", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the settings and attributes of a specific endpoint for an application.
    public func getEndpoint(_ input: GetEndpointRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetEndpointResponse {
        return try await self.client.execute(operation: "GetEndpoint", path: "/v1/apps/{ApplicationId}/endpoints/{EndpointId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the event stream settings for an application.
    public func getEventStream(_ input: GetEventStreamRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetEventStreamResponse {
        return try await self.client.execute(operation: "GetEventStream", path: "/v1/apps/{ApplicationId}/eventstream", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of a specific export job for an application.
    public func getExportJob(_ input: GetExportJobRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetExportJobResponse {
        return try await self.client.execute(operation: "GetExportJob", path: "/v1/apps/{ApplicationId}/jobs/export/{JobId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of all the export jobs for an application.
    public func getExportJobs(_ input: GetExportJobsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetExportJobsResponse {
        return try await self.client.execute(operation: "GetExportJobs", path: "/v1/apps/{ApplicationId}/jobs/export", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of the GCM channel for an application.
    public func getGcmChannel(_ input: GetGcmChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetGcmChannelResponse {
        return try await self.client.execute(operation: "GetGcmChannel", path: "/v1/apps/{ApplicationId}/channels/gcm", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of a specific import job for an application.
    public func getImportJob(_ input: GetImportJobRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetImportJobResponse {
        return try await self.client.execute(operation: "GetImportJob", path: "/v1/apps/{ApplicationId}/jobs/import/{JobId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of all the import jobs for an application.
    public func getImportJobs(_ input: GetImportJobsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetImportJobsResponse {
        return try await self.client.execute(operation: "GetImportJobs", path: "/v1/apps/{ApplicationId}/jobs/import", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves the in-app messages targeted for the provided endpoint ID.
    public func getInAppMessages(_ input: GetInAppMessagesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetInAppMessagesResponse {
        return try await self.client.execute(operation: "GetInAppMessages", path: "/v1/apps/{ApplicationId}/endpoints/{EndpointId}/inappmessages", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves the content and settings of a message template for messages sent through the in-app channel.
    public func getInAppTemplate(_ input: GetInAppTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetInAppTemplateResponse {
        return try await self.client.execute(operation: "GetInAppTemplate", path: "/v1/templates/{TemplateName}/inapp", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status, configuration, and other settings for a journey.
    public func getJourney(_ input: GetJourneyRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetJourneyResponse {
        return try await self.client.execute(operation: "GetJourney", path: "/v1/apps/{ApplicationId}/journeys/{JourneyId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves (queries) pre-aggregated data for a standard engagement metric that applies to a journey.
    public func getJourneyDateRangeKpi(_ input: GetJourneyDateRangeKpiRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetJourneyDateRangeKpiResponse {
        return try await self.client.execute(operation: "GetJourneyDateRangeKpi", path: "/v1/apps/{ApplicationId}/journeys/{JourneyId}/kpis/daterange/{KpiName}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves (queries) pre-aggregated data for a standard execution metric that applies to a journey activity.
    public func getJourneyExecutionActivityMetrics(_ input: GetJourneyExecutionActivityMetricsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetJourneyExecutionActivityMetricsResponse {
        return try await self.client.execute(operation: "GetJourneyExecutionActivityMetrics", path: "/v1/apps/{ApplicationId}/journeys/{JourneyId}/activities/{JourneyActivityId}/execution-metrics", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves (queries) pre-aggregated data for a standard execution metric that applies to a journey.
    public func getJourneyExecutionMetrics(_ input: GetJourneyExecutionMetricsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetJourneyExecutionMetricsResponse {
        return try await self.client.execute(operation: "GetJourneyExecutionMetrics", path: "/v1/apps/{ApplicationId}/journeys/{JourneyId}/execution-metrics", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves the content and settings of a message template for messages that are sent through a push notification channel.
    public func getPushTemplate(_ input: GetPushTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetPushTemplateResponse {
        return try await self.client.execute(operation: "GetPushTemplate", path: "/v1/templates/{TemplateName}/push", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about an Amazon Pinpoint configuration for a recommender model.
    public func getRecommenderConfiguration(_ input: GetRecommenderConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetRecommenderConfigurationResponse {
        return try await self.client.execute(operation: "GetRecommenderConfiguration", path: "/v1/recommenders/{RecommenderId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about all the recommender model configurations that are associated with your Amazon Pinpoint account.
    public func getRecommenderConfigurations(_ input: GetRecommenderConfigurationsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetRecommenderConfigurationsResponse {
        return try await self.client.execute(operation: "GetRecommenderConfigurations", path: "/v1/recommenders", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the configuration, dimension, and other settings for a specific segment that's associated with an application.
    public func getSegment(_ input: GetSegmentRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSegmentResponse {
        return try await self.client.execute(operation: "GetSegment", path: "/v1/apps/{ApplicationId}/segments/{SegmentId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of the export jobs for a segment.
    public func getSegmentExportJobs(_ input: GetSegmentExportJobsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSegmentExportJobsResponse {
        return try await self.client.execute(operation: "GetSegmentExportJobs", path: "/v1/apps/{ApplicationId}/segments/{SegmentId}/jobs/export", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of the import jobs for a segment.
    public func getSegmentImportJobs(_ input: GetSegmentImportJobsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSegmentImportJobsResponse {
        return try await self.client.execute(operation: "GetSegmentImportJobs", path: "/v1/apps/{ApplicationId}/segments/{SegmentId}/jobs/import", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the configuration, dimension, and other settings for a specific version of a segment that's associated with an application.
    public func getSegmentVersion(_ input: GetSegmentVersionRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSegmentVersionResponse {
        return try await self.client.execute(operation: "GetSegmentVersion", path: "/v1/apps/{ApplicationId}/segments/{SegmentId}/versions/{Version}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the configuration, dimension, and other settings for all the versions of a specific segment that's associated with an application.
    public func getSegmentVersions(_ input: GetSegmentVersionsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSegmentVersionsResponse {
        return try await self.client.execute(operation: "GetSegmentVersions", path: "/v1/apps/{ApplicationId}/segments/{SegmentId}/versions", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the configuration, dimension, and other settings for all the segments that are associated with an application.
    public func getSegments(_ input: GetSegmentsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSegmentsResponse {
        return try await self.client.execute(operation: "GetSegments", path: "/v1/apps/{ApplicationId}/segments", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of the SMS channel for an application.
    public func getSmsChannel(_ input: GetSmsChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSmsChannelResponse {
        return try await self.client.execute(operation: "GetSmsChannel", path: "/v1/apps/{ApplicationId}/channels/sms", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves the content and settings of a message template for messages that are sent through the SMS channel.
    public func getSmsTemplate(_ input: GetSmsTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSmsTemplateResponse {
        return try await self.client.execute(operation: "GetSmsTemplate", path: "/v1/templates/{TemplateName}/sms", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about all the endpoints that are associated with a specific user ID.
    public func getUserEndpoints(_ input: GetUserEndpointsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetUserEndpointsResponse {
        return try await self.client.execute(operation: "GetUserEndpoints", path: "/v1/apps/{ApplicationId}/users/{UserId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status and settings of the voice channel for an application.
    public func getVoiceChannel(_ input: GetVoiceChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetVoiceChannelResponse {
        return try await self.client.execute(operation: "GetVoiceChannel", path: "/v1/apps/{ApplicationId}/channels/voice", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves the content and settings of a message template for messages that are sent through the voice channel.
    public func getVoiceTemplate(_ input: GetVoiceTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetVoiceTemplateResponse {
        return try await self.client.execute(operation: "GetVoiceTemplate", path: "/v1/templates/{TemplateName}/voice", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about the status, configuration, and other settings for all the journeys that are associated with an application.
    public func listJourneys(_ input: ListJourneysRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListJourneysResponse {
        return try await self.client.execute(operation: "ListJourneys", path: "/v1/apps/{ApplicationId}/journeys", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves all the tags (keys and values) that are associated with an application, campaign, message template, or segment.
    public func listTagsForResource(_ input: ListTagsForResourceRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListTagsForResourceResponse {
        return try await self.client.execute(operation: "ListTagsForResource", path: "/v1/tags/{ResourceArn}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about all the versions of a specific message template.
    public func listTemplateVersions(_ input: ListTemplateVersionsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListTemplateVersionsResponse {
        return try await self.client.execute(operation: "ListTemplateVersions", path: "/v1/templates/{TemplateName}/{TemplateType}/versions", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about all the message templates that are associated with your Amazon Pinpoint account.
    public func listTemplates(_ input: ListTemplatesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListTemplatesResponse {
        return try await self.client.execute(operation: "ListTemplates", path: "/v1/templates", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Retrieves information about a phone number.
    public func phoneNumberValidate(_ input: PhoneNumberValidateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> PhoneNumberValidateResponse {
        return try await self.client.execute(operation: "PhoneNumberValidate", path: "/v1/phone/number/validate", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a new event stream for an application or updates the settings of an existing event stream for an application.
    public func putEventStream(_ input: PutEventStreamRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> PutEventStreamResponse {
        return try await self.client.execute(operation: "PutEventStream", path: "/v1/apps/{ApplicationId}/eventstream", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a new event to record for endpoints, or creates or updates endpoint data that existing events are associated with.
    public func putEvents(_ input: PutEventsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> PutEventsResponse {
        return try await self.client.execute(operation: "PutEvents", path: "/v1/apps/{ApplicationId}/events", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Removes one or more attributes, of the same attribute type, from all the endpoints that are associated with an application.
    public func removeAttributes(_ input: RemoveAttributesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> RemoveAttributesResponse {
        return try await self.client.execute(operation: "RemoveAttributes", path: "/v1/apps/{ApplicationId}/attributes/{AttributeType}", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates and sends a direct message.
    public func sendMessages(_ input: SendMessagesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> SendMessagesResponse {
        return try await self.client.execute(operation: "SendMessages", path: "/v1/apps/{ApplicationId}/messages", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Send an OTP message
    public func sendOTPMessage(_ input: SendOTPMessageRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> SendOTPMessageResponse {
        return try await self.client.execute(operation: "SendOTPMessage", path: "/v1/apps/{ApplicationId}/otp", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates and sends a message to a list of users.
    public func sendUsersMessages(_ input: SendUsersMessagesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> SendUsersMessagesResponse {
        return try await self.client.execute(operation: "SendUsersMessages", path: "/v1/apps/{ApplicationId}/users-messages", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Adds one or more tags (keys and values) to an application, campaign, message template, or segment.
    public func tagResource(_ input: TagResourceRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "TagResource", path: "/v1/tags/{ResourceArn}", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Removes one or more tags (keys and values) from an application, campaign, message template, or segment.
    public func untagResource(_ input: UntagResourceRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "UntagResource", path: "/v1/tags/{ResourceArn}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Enables the ADM channel for an application or updates the status and settings of the ADM channel for an application.
    public func updateAdmChannel(_ input: UpdateAdmChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateAdmChannelResponse {
        return try await self.client.execute(operation: "UpdateAdmChannel", path: "/v1/apps/{ApplicationId}/channels/adm", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Enables the APNs channel for an application or updates the status and settings of the APNs channel for an application.
    public func updateApnsChannel(_ input: UpdateApnsChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateApnsChannelResponse {
        return try await self.client.execute(operation: "UpdateApnsChannel", path: "/v1/apps/{ApplicationId}/channels/apns", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Enables the APNs sandbox channel for an application or updates the status and settings of the APNs sandbox channel for an application.
    public func updateApnsSandboxChannel(_ input: UpdateApnsSandboxChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateApnsSandboxChannelResponse {
        return try await self.client.execute(operation: "UpdateApnsSandboxChannel", path: "/v1/apps/{ApplicationId}/channels/apns_sandbox", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Enables the APNs VoIP channel for an application or updates the status and settings of the APNs VoIP channel for an application.
    public func updateApnsVoipChannel(_ input: UpdateApnsVoipChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateApnsVoipChannelResponse {
        return try await self.client.execute(operation: "UpdateApnsVoipChannel", path: "/v1/apps/{ApplicationId}/channels/apns_voip", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Enables the APNs VoIP sandbox channel for an application or updates the status and settings of the APNs VoIP sandbox channel for an application.
    public func updateApnsVoipSandboxChannel(_ input: UpdateApnsVoipSandboxChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateApnsVoipSandboxChannelResponse {
        return try await self.client.execute(operation: "UpdateApnsVoipSandboxChannel", path: "/v1/apps/{ApplicationId}/channels/apns_voip_sandbox", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Updates the settings for an application.
    public func updateApplicationSettings(_ input: UpdateApplicationSettingsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateApplicationSettingsResponse {
        return try await self.client.execute(operation: "UpdateApplicationSettings", path: "/v1/apps/{ApplicationId}/settings", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Enables the Baidu channel for an application or updates the status and settings of the Baidu channel for an application.
    public func updateBaiduChannel(_ input: UpdateBaiduChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateBaiduChannelResponse {
        return try await self.client.execute(operation: "UpdateBaiduChannel", path: "/v1/apps/{ApplicationId}/channels/baidu", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Updates the configuration and other settings for a campaign.
    public func updateCampaign(_ input: UpdateCampaignRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateCampaignResponse {
        return try await self.client.execute(operation: "UpdateCampaign", path: "/v1/apps/{ApplicationId}/campaigns/{CampaignId}", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Enables the email channel for an application or updates the status and settings of the email channel for an application.
    public func updateEmailChannel(_ input: UpdateEmailChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateEmailChannelResponse {
        return try await self.client.execute(operation: "UpdateEmailChannel", path: "/v1/apps/{ApplicationId}/channels/email", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Updates an existing message template for messages that are sent through the email channel.
    public func updateEmailTemplate(_ input: UpdateEmailTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateEmailTemplateResponse {
        return try await self.client.execute(operation: "UpdateEmailTemplate", path: "/v1/templates/{TemplateName}/email", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a new endpoint for an application or updates the settings and attributes of an existing endpoint for an application. You can also use this operation to define custom attributes for an endpoint. If an update includes one or more values for a custom attribute, Amazon Pinpoint replaces (overwrites) any existing values with the new values.
    public func updateEndpoint(_ input: UpdateEndpointRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateEndpointResponse {
        return try await self.client.execute(operation: "UpdateEndpoint", path: "/v1/apps/{ApplicationId}/endpoints/{EndpointId}", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a new batch of endpoints for an application or updates the settings and attributes of a batch of existing endpoints for an application. You can also use this operation to define custom attributes for a batch of endpoints. If an update includes one or more values for a custom attribute, Amazon Pinpoint replaces (overwrites) any existing values with the new values.
    public func updateEndpointsBatch(_ input: UpdateEndpointsBatchRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateEndpointsBatchResponse {
        return try await self.client.execute(operation: "UpdateEndpointsBatch", path: "/v1/apps/{ApplicationId}/endpoints", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Enables the GCM channel for an application or updates the status and settings of the GCM channel for an application.
    public func updateGcmChannel(_ input: UpdateGcmChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateGcmChannelResponse {
        return try await self.client.execute(operation: "UpdateGcmChannel", path: "/v1/apps/{ApplicationId}/channels/gcm", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Updates an existing message template for messages sent through the in-app message channel.
    public func updateInAppTemplate(_ input: UpdateInAppTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateInAppTemplateResponse {
        return try await self.client.execute(operation: "UpdateInAppTemplate", path: "/v1/templates/{TemplateName}/inapp", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Updates the configuration and other settings for a journey.
    public func updateJourney(_ input: UpdateJourneyRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateJourneyResponse {
        return try await self.client.execute(operation: "UpdateJourney", path: "/v1/apps/{ApplicationId}/journeys/{JourneyId}", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Cancels (stops) an active journey.
    public func updateJourneyState(_ input: UpdateJourneyStateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateJourneyStateResponse {
        return try await self.client.execute(operation: "UpdateJourneyState", path: "/v1/apps/{ApplicationId}/journeys/{JourneyId}/state", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Updates an existing message template for messages that are sent through a push notification channel.
    public func updatePushTemplate(_ input: UpdatePushTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdatePushTemplateResponse {
        return try await self.client.execute(operation: "UpdatePushTemplate", path: "/v1/templates/{TemplateName}/push", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Updates an Amazon Pinpoint configuration for a recommender model.
    public func updateRecommenderConfiguration(_ input: UpdateRecommenderConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateRecommenderConfigurationResponse {
        return try await self.client.execute(operation: "UpdateRecommenderConfiguration", path: "/v1/recommenders/{RecommenderId}", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Creates a new segment for an application or updates the configuration, dimension, and other settings for an existing segment that's associated with an application.
    public func updateSegment(_ input: UpdateSegmentRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateSegmentResponse {
        return try await self.client.execute(operation: "UpdateSegment", path: "/v1/apps/{ApplicationId}/segments/{SegmentId}", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Enables the SMS channel for an application or updates the status and settings of the SMS channel for an application.
    public func updateSmsChannel(_ input: UpdateSmsChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateSmsChannelResponse {
        return try await self.client.execute(operation: "UpdateSmsChannel", path: "/v1/apps/{ApplicationId}/channels/sms", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Updates an existing message template for messages that are sent through the SMS channel.
    public func updateSmsTemplate(_ input: UpdateSmsTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateSmsTemplateResponse {
        return try await self.client.execute(operation: "UpdateSmsTemplate", path: "/v1/templates/{TemplateName}/sms", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Changes the status of a specific version of a message template to active.
    public func updateTemplateActiveVersion(_ input: UpdateTemplateActiveVersionRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateTemplateActiveVersionResponse {
        return try await self.client.execute(operation: "UpdateTemplateActiveVersion", path: "/v1/templates/{TemplateName}/{TemplateType}/active-version", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Enables the voice channel for an application or updates the status and settings of the voice channel for an application.
    public func updateVoiceChannel(_ input: UpdateVoiceChannelRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateVoiceChannelResponse {
        return try await self.client.execute(operation: "UpdateVoiceChannel", path: "/v1/apps/{ApplicationId}/channels/voice", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Updates an existing message template for messages that are sent through the voice channel.
    public func updateVoiceTemplate(_ input: UpdateVoiceTemplateRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateVoiceTemplateResponse {
        return try await self.client.execute(operation: "UpdateVoiceTemplate", path: "/v1/templates/{TemplateName}/voice", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    /// Verify an OTP
    public func verifyOTPMessage(_ input: VerifyOTPMessageRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> VerifyOTPMessageResponse {
        return try await self.client.execute(operation: "VerifyOTPMessage", path: "/v1/apps/{ApplicationId}/verify-otp", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }
}

#endif // compiler(>=5.5.2) && canImport(_Concurrency)
